/**
 * DP4 最小花费爬楼梯
 *
 * 给定一个整数数组  cost, 其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用，
 * 下标从0开始。一旦你支付此费用，即可选择向上爬一个或者两个台阶。
 * 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
 * 请你计算并返回达到楼梯顶部的最低花费。
 * 数据范围：数组长度满足 1≤n≤10^5 数组中的值满足 1≤cost≤10^4
 *
 * 输入描述：
 * 第一行输入一个正整数 n ，表示数组 cost 的长度。
 * 第二行输入 n 个正整数，表示数组 cost 的值。
 * 输出描述：
 * 输出最低花费
 */

import java.util.Scanner;

/**
 * 动态规划, dp[i] : 到达 i 的时候的最小花费
 * 时间复杂度 : O(n)
 * 空间复杂度 : O(n)
 */

public class Main {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int n = in.nextInt();
        int[] nums = new int[n];

        for (int i = 0; i < n; i++) {
            nums[i] = in.nextInt();
        }

        if (n == 1) {

            // 特殊情况
            System.out.println(nums[0]);

        } else {

            int[] dp = new int[n + 1];

            for (int i = 2; i <= n; i++) {
                dp[i] = Math.min(dp[i - 1] + nums[i - 1],
                        dp[i - 2] + nums[i - 2]);
            }

            System.out.println(dp[n]);

        }
    }
}